// 安全中间件
const rateLimit = require('express-rate-limit')
const helmet = require('helmet')

/**
 * 设置安全头
 */
const securityHeaders = helmet({
  // 禁用不必要的头部
  xPoweredBy: false,
  // 内容安全策略
  contentSecurityPolicy: {
    directives: {
      defaultSrc: ["'self'"],
      styleSrc: ["'self'", "'unsafe-inline'"],
      scriptSrc: ["'self'"],
      imgSrc: ["'self'", "data:", "https:"]
    }
  }
})

/**
 * API请求限制
 */
const apiLimiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15分钟
  max: 999, // 限制每个IP 15分钟内最多100次请求
  message: {
    status: 1,
    message: '请求过于频繁，请稍后再试'
  }
})

/**
 * 严格API请求限制（用于登录等敏感操作）
 */
const strictApiLimiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15分钟
  max: 5, // 限制每个IP 15分钟内最多5次请求
  message: {
    status: 1,
    message: '请求过于频繁，请稍后再试'
  }
})

module.exports = {
  securityHeaders,
  apiLimiter,
  strictApiLimiter
}